glLightModelf,
glLightModeli, glLightModelfv, glLightModeliv
[New
- Windows 95, OEM Service Release 2]
These
functions set the lighting model parameters.
void glLightModelf(
GLenum pname, |
|
GLfloat param |
|
); |
|
void glLightModeli(
GLenum pname, |
|
GLint param |
|
); |
|
Parameters
pname
A
single-valued lighting model parameter. The following values are accepted:
GL_LIGHT_MODEL_LOCAL_VIEWER
The params
parameter is a single integer or floating-point value that specifies how
specular reflection angles are computed. If params is 0 (or 0.0), specular
reflection angles take the view direction to be parallel to and in the
direction of the -z axis,
regardless of the location of the vertex in eye coordinates. Otherwise specular
reflections are computed from the origin of the eye coordinate system. The
default is 0.
GL_LIGHT_MODEL_TWO_SIDE
The params
parameter is a single integer or floating-point value that specifies whether
one- or two-sided lighting calculations are done for polygons. It has no effect
on the lighting calculations for points, lines, or bitmaps. If params is
0 (or 0.0), one-sided lighting is specified, and only the front material
parameters are used in the lighting equation. Otherwise, two-sided lighting is
specified. In this case, vertices of back-facing polygons are lighted using the
back material parameters, and have their normals reversed before the
lighting equation is evaluated. Vertices of front-facing polygons are always
lighted using the front material parameters, with no change to their
normals. The default is 0.
param
The value to
which param will be set.
void glLightModelfv(
GLenum pname, |
|
const GLfloat *params |
|
); |
|
void glLightModeliv(
GLenum pname, |
|
const GLint *params |
|
); |
|
Parameters
pname
A lighting
model parameter. The following values are accepted:
GL_LIGHT_MODEL_AMBIENT
The params
parameter contains four integer or floating-point values that specify the
ambient RGBA intensity of the entire scene. Integer values are mapped linearly
such that the most positive representable value maps to 1.0, and the most
negative representable value maps to -1.0. Floating-point values are mapped directly. Neither integer nor
floating-point values are clamped. The default ambient scene intensity is (0.2,
0.2, 0.2, 1.0).
GL_LIGHT_MODEL_LOCAL_VIEWER
The params
parameter is a single integer or floating-point value that specifies how
specular reflection angles are computed. If params is 0 (or 0.0),
specular reflection angles take the view direction to be parallel to and in the
direction of the -z axis,
regardless of the location of the vertex in eye coordinates. Otherwise specular
reflections are computed from the origin of the eye coordinate system. The
default is 0.
GL_LIGHT_MODEL_TWO_SIDE
The params
parameter is a single integer or floating-point value that specifies whether
one- or two-sided lighting calculations are done for polygons. It has no effect
on the lighting calculations for points, lines, or bitmaps. If params is
0 (or 0.0), one-sided lighting is specified, and only the front material
parameters are used in the lighting equation. Otherwise, two-sided lighting is
specified. In this case, vertices of back-facing polygons are lighted using the
back material parameters, and have their normals reversed before the
lighting equation is evaluated. Vertices of front-facing polygons are always
lighted using the front material parameters, with no change to their
normals. The default is 0.
params
A pointer to
the value or values to which params will be set.
Remarks
The glLightModel
function sets the lighting model parameter. The pname parameter names a
parameter and params gives the new value.
In RGBA mode,
the lighted color of a vertex is the sum of the material emission intensity,
the product of the material ambient reflectance and the lighting model
full-scene ambient intensity, and the contribution of each enabled light
source. Each light source contributes the sum of three terms: ambient, diffuse,
and specular. The ambient light source contribution is the product of the
material ambient reflectance and the light s ambient intensity. The diffuse
light source contribution is the product of the material diffuse reflectance,
the light s diffuse intensity, and the dot product of the vertex's normal with
the normalized vector from the vertex to the light source. The specular light
source contribution is the product of the material specular reflectance, the
light s specular intensity, and the dot product of the normalized vertex-to-eye
and vertex-to-light vectors, raised to the power of the shininess of the
material. All three light source contributions are attenuated equally based on
the distance from the vertex to the light source and on light source direction,
spread exponent, and spread cutoff angle. All dot products are replaced with
zero if they evaluate to a negative value.
The alpha
component of the resulting lighted color is set to the alpha value of the
material diffuse reflectance.
In
color-index mode, the value of the lighted index of a vertex ranges from the
ambient to the specular values passed to glMaterial
The following
functions retrieve information related to glLightModel:
glGet
with argument GL_LIGHT_MODEL_AMBIENT
glGet with
argument GL_LIGHT_MODEL_LOCAL_VIEWER
glGet with
argument GL_LIGHT_MODEL_TWO_SIDE
glIsEnabled with argument GL_LIGHTING
Error Codes
The following
are the error codes generated and their conditions.
Error
Code |
Condition |
GL_INVALID_ENUM
|
pname was not an accepted value. |
GL_INVALID_OPERATION
|
glLightModel was called between a call to glBegin and the
corresponding call to glEnd. |
See Also